Telegram Group & Telegram Channel
🎉 T-строки официально в Python 3.14

В конце 2025 года нас ждёт мощное пополнение — в Python появятся template strings (t-strings). Это новая форма строк, которая решает старые проблемы f-строк и открывает дверь к более безопасной и гибкой работе с текстом.

🎌 Что такое t-строки

С f-строками (f"...") мы живём с 2016 года — они удобные, но иногда… опасные. Например:
f"SELECT * FROM users WHERE name = '{user_name}'"


🔎 Такой код легко подставляет вредоносный ввод — и привет, SQL-инъекция или XSS.

Теперь появляется альтернатива: t-строки. Они выглядят похоже:
from string.templatelib import Template
template = t"Hello {name}!"


🔎 Но — они не превращаются сразу в строку, а становятся объектом Template. Их нужно явно обработать, и это даёт пространство для экранирования, валидации и любых безопасных преобразований.

🎌 Безопасный HTML

Пример: экранирование HTML-ввода
evil = "<script>alert('bad')</script>"
template = t"<p>{evil}</p>"
safe = html(template)
assert safe == "<p>&lt;script&gt;alert('bad')&lt;/script&gt;</p>"


🔎 Больше никакой грязи в шаблоне. А ещё html() может возвращать полноценный HTMLElement, а не просто строку. Всё гибко.

🎌 Как работать с t-strings

Шаблон предоставляет доступ к строкам и значениям до их объединения. Свойства .strings и .values возвращают кортежи:
name = "World"
template = t"Hello {name}!"
assert template.strings == ("Hello ", "!")
assert template.values == (name,)


Всегда будет на одну строку больше, чем значений. Например:
t"".strings == ("",)
t"{name}".strings == ("", "")


Можно просто пройтись по шаблону в цикле:
template = t"Hello {name}!"
contents = list(template)
assert contents[0] == "Hello "
assert contents[1].value == name
assert contents[2] == "!"


Для продвинутой обработки можно получить данные о каждой интерполяции:
template = t"Hello {name!s:>8}!"
interp = template.interpolations[0]
assert interp.value == name
assert interp.expression == "name"
assert interp.conversion == "s"
assert interp.format_spec == ">8"


Можно создать шаблон напрямую:
from string.templatelib import Template, Interpolation
template = Template(
"Hello ",
Interpolation(value="World", expression="name"),
"!"
)


T-строки — это:
✔️ Безопасность для HTML, SQL и Markdown
✔️ Возможность сложной обработки шаблонов
✔️ Гибкость: можно возвращать любой тип, а не только строку

🔎 Очень хочется, чтобы форматтеры типа black и ruff поддержали t-строки, а VS Code начал подсвечивать их содержимое. Потому что t-strings — это не просто новая игрушка, а основа для более безопасного Python-кода.

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6652
Create:
Last Update:

🎉 T-строки официально в Python 3.14

В конце 2025 года нас ждёт мощное пополнение — в Python появятся template strings (t-strings). Это новая форма строк, которая решает старые проблемы f-строк и открывает дверь к более безопасной и гибкой работе с текстом.

🎌 Что такое t-строки

С f-строками (f"...") мы живём с 2016 года — они удобные, но иногда… опасные. Например:

f"SELECT * FROM users WHERE name = '{user_name}'"


🔎 Такой код легко подставляет вредоносный ввод — и привет, SQL-инъекция или XSS.

Теперь появляется альтернатива: t-строки. Они выглядят похоже:
from string.templatelib import Template
template = t"Hello {name}!"


🔎 Но — они не превращаются сразу в строку, а становятся объектом Template. Их нужно явно обработать, и это даёт пространство для экранирования, валидации и любых безопасных преобразований.

🎌 Безопасный HTML

Пример: экранирование HTML-ввода
evil = "<script>alert('bad')</script>"
template = t"<p>{evil}</p>"
safe = html(template)
assert safe == "<p>&lt;script&gt;alert('bad')&lt;/script&gt;</p>"


🔎 Больше никакой грязи в шаблоне. А ещё html() может возвращать полноценный HTMLElement, а не просто строку. Всё гибко.

🎌 Как работать с t-strings

Шаблон предоставляет доступ к строкам и значениям до их объединения. Свойства .strings и .values возвращают кортежи:
name = "World"
template = t"Hello {name}!"
assert template.strings == ("Hello ", "!")
assert template.values == (name,)


Всегда будет на одну строку больше, чем значений. Например:
t"".strings == ("",)
t"{name}".strings == ("", "")


Можно просто пройтись по шаблону в цикле:
template = t"Hello {name}!"
contents = list(template)
assert contents[0] == "Hello "
assert contents[1].value == name
assert contents[2] == "!"


Для продвинутой обработки можно получить данные о каждой интерполяции:
template = t"Hello {name!s:>8}!"
interp = template.interpolations[0]
assert interp.value == name
assert interp.expression == "name"
assert interp.conversion == "s"
assert interp.format_spec == ">8"


Можно создать шаблон напрямую:
from string.templatelib import Template, Interpolation
template = Template(
"Hello ",
Interpolation(value="World", expression="name"),
"!"
)


T-строки — это:
✔️ Безопасность для HTML, SQL и Markdown
✔️ Возможность сложной обработки шаблонов
✔️ Гибкость: можно возвращать любой тип, а не только строку

🔎 Очень хочется, чтобы форматтеры типа black и ruff поддержали t-строки, а VS Code начал подсвечивать их содержимое. Потому что t-strings — это не просто новая игрушка, а основа для более безопасного Python-кода.

Библиотека питониста #свежак

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tg-me.com/pyproglib/6652

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

Should I buy bitcoin?

“To the extent it is used I fear it’s often for illicit finance. It’s an extremely inefficient way of conducting transactions, and the amount of energy that’s consumed in processing those transactions is staggering,” the former Fed chairwoman said. Yellen’s comments have been cited as a reason for bitcoin’s recent losses. However, Yellen’s assessment of bitcoin as a inefficient medium of exchange is an important point and one that has already been raised in the past by bitcoin bulls. Using a volatile asset in exchange for goods and services makes little sense if the asset can tumble 10% in a day, or surge 80% over the course of a two months as bitcoin has done in 2021, critics argue. To put a finer point on it, over the past 12 months bitcoin has registered 8 corrections, defined as a decline from a recent peak of at least 10% but not more than 20%, and two bear markets, which are defined as falls of 20% or more, according to Dow Jones Market Data.

Unlimited members in Telegram group now

Telegram has made it easier for its users to communicate, as it has introduced a feature that allows more than 200,000 users in a group chat. However, if the users in a group chat move past 200,000, it changes into "Broadcast Group", but the feature comes with a restriction. Groups with close to 200k members can be converted to a Broadcast Group that allows unlimited members. Only admins can post in Broadcast Groups, but everyone can read along and participate in group Voice Chats," Telegram added.

Библиотека питониста | Python Django Flask from fr


Telegram Библиотека питониста | Python, Django, Flask
FROM USA